<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>Set中的特殊值</h2>
    <h3>Set对象存储的值总是唯一的，所以需要判断俩个值是否恒等。有几个特殊值需要特殊对待：</h3>
    <p>+0 与-0 在存储判断唯一性的时候恒等，所以不重复</p>
    <p>undefined 与undefined是恒等的，所以不重复</p>
    <p>NaN与NaN是不恒等的，但是在Set中只能存一个，不重复</p>
</body>
<script>
    let mySet = new Set();

    mySet.add(1);//Set(1) {1}
    mySet.add(5);//Set(2) {1, 5}
    mySet.add(5);//Set(2) {1, 5} 这里体现了值的唯一性
    mySet.add("some text");
    //Set(3) {1, 5, "some text"}这里体现了类型的多样性
    var  o = {a:1, b:2};
    mySet.add(o);
    mySet.add({a : 1, b : 2});
    //Set(5) {1, 5, "some text", {...}, {...}}
    //这里体现了对象之间引用不同不恒等，即使值相同，Set也能存储
</script>
</html>